<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2017 河源市卓锐科技有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------
// | 开源协议 ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------

namespace app\warehouse\admin;

use app\admin\controller\Admin;
use app\common\builder\ZBuilder;
use app\warehouse\model\Distribute as DistributeModel;
use app\warehouse\model\Carrier as CarrierModel;
use think\Db;

/**
 * 物流方式管理控制器
 * @package app\warehouse\controller
 */
class Distribute extends Admin
{
    /**
     * 物流方式列表
     * @author 陈梦晨 <2391157750@qq.com>
     * @return mixed
     */
    public function index()
    {
       // 查询
        $map = $this->getMap();
        $map['admin_distribute.isdel']=0;
        $carrierid=input('carrierid',0,'intval');
        $pagetitle="物流方式列表";
        if($carrierid){
            $map['admin_distribute.carrierid']=$carrierid;
            $pagetitle=db("admin_carrier")->where('id',$carrierid)->value('title');
        }

        
        // 排序
        $order = $this->getOrder('admin_distribute.listorder desc, admin_distribute.id asc');
        // 数据列表
        $data_list = DistributeModel::getAll($map, $order);
        // 分页数据
        $page = $data_list->render();

        // 使用ZBuilder快速创建数据表格
        return ZBuilder::make('table')
            ->setPageTitle($pagetitle) // 设置页面标题
            ->setTableName('admin_distribute')
            ->setPrimaryKey("id")
            ->setSearch(['admin_distribute.title' => '物流方式名称']) // 设置搜索框
            //->addFilter('admin_carrier.carrierid') // 添加筛选
            ->addTimeFilter('admin_distribute.create_time')
            ->addTopButton('add') // 添加顶部按钮
            ->addTopButton('enable') // 添加顶部按钮
            ->addTopButton('disable') // 添加顶部按钮
            ->addColumns([ // 批量添加数据列
                ['id', '编号'],
                ['carrierid', '承运商','select',CarrierModel::getAllList()],
                ['title', '物流方式名称', 'text.edit'],
                ['listorder', '排序', 'text.edit'],
                ['status', '状态', 'switch'],
                ['create_time', '添加时间'],
                ['right_button', '操作', 'btn']
            ])
            ->addOrder(['admin_distribute.listorder', 'admin_distribute.id'])
            ->addRightButton('edit', ['class'=>'btn btn-xs btn-default','icon' => 'fa fa-pencil', 'title' => '编辑', 'href' => url('edit', ['id' => '__id__'])])
            ->addRightButton('delete',['class'=>'btn btn-xs btn-default','icon' => 'fa fa-times', 'title' => '删除', 'href' => url('delete', ['id' => '__id__'])])
            ->setRowList($data_list) // 设置表格数据
            ->setPages($page) // 设置分页数据
            ->fetch(); // 渲染模板
    }

    /**
     * 编辑物流方式
     * @param null $id 物流方式id
     * @author 陈梦晨 <2391157750@qq.com>
     */
    public function edit($id = null)
    {
        if ($id === null) return $this->error('缺少参数');
        $info = DistributeModel::find(['id' => $id]);

        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
            ->setPageTitle('编辑') // 设置页面标题
            ->setUrl(url('dosave'))
            ->addFormItems([ // 批量添加表单项
                ['hidden', 'id'],
                ['select', 'carrierid', '承运商', '<span class="text-danger">必选</span>', CarrierModel::getAllList(['status'=>1,'isdel'=>0],['sort'=>'desc','carrierid'=>'asc'])],
                ['text', 'title', '物流方式名称', '<span class="text-danger">必填</span>'],
                ['radio', 'status', '状态', '', ['禁用', '启用'],1],
                ['text', 'listorder', '排序'],
            ])
            ->layout(['carrierid'=>4,'title'=>4,'listorder'=>3])
            ->setFormData($info) // 设置表单数据
            ->fetch();
            
    }
    public function dosave(){
        // 保存数据
        if ($this->request->isPost()) {
            $data = $this->request->post();
            
            // 验证
            $result = $this->validate($data, 'Distribute');
            // 验证失败 输出错误信息
            if(true !== $result) return $this->error($result);

            if ($menu = DistributeModel::update($data)) {
                return $this->success('修改成功', url('index'));
            } else {
                return $this->error('修改失败');
            }
        }
    }
    /**
     * 新增物流方式
     * @param null $id 物流方式id
     * @author 陈梦晨 <2391157750@qq.com>
     */

    public function add($pid = null){

        // 使用ZBuilder快速创建表单
        return ZBuilder::make('form')
            ->setPageTitle('新增') // 设置页面标题
            ->setUrl(url('doadd'))
            ->addFormItems([ // 批量添加表单项
                ['select', 'carrierid', '承运商', '<span class="text-danger">必选</span>', CarrierModel::getAllList(['status'=>1,'isdel'=>0],['sort'=>'desc','carrierid'=>'asc'])],
                ['text', 'title', '物流方式名称', '<span class="text-danger">必填</span>'],
                ['radio', 'status', '状态', '', ['禁用', '启用'],1],
                ['text', 'listorder', '排序'],
            ])
            ->layout(['carrierid'=>4,'title'=>4,'listorder'=>3])
            ->fetch();
    }
    public function doadd(){
        // 保存数据
        if ($this->request->isPost()) {
            $data = $this->request->post();
            
            // 验证
            $result = $this->validate($data, 'Distribute');
            // 验证失败 输出错误信息
            if(true !== $result) return $this->error($result);

            if ($menu = DistributeModel::create($data)) {
                return $this->success('新增成功', url('index'));
            } else {
                return $this->error('新增失败');
            }
        }

    }

    /**
     * 删除物流方式
     * @author 陈梦晨 <2391157750@qq.com>
     * @return mixed
     */
    public function delete($record = [])
    {
        $id = $this->request->param('id');
        // 删除节点
        if (DistributeModel::del($id)) {
            return $this->success('删除成功');
        } else {
            return $this->error('删除失败');
        }
    }
    /**
     * 设置状态
     * @param string $type 状态类型:enable/disable
     * @param array $record 行为日志内容
     * @author 陈梦晨 <2391157750@qq.com>
     * @return mixed
     */
    public function setstatus($type = '', $record = [])
    {
        $ids = $this->request->isPost() ? input('post.ids/a') : input('param.ids');
        if (empty($ids)) return $this->error('缺少主键');

        if(DistributeModel::$type($ids)){
            return $this->success('操作成功');
        }else{
            return $this->error('操作失败');
        }
            
    }

    /**
     * 禁用
     * @param array $record 行为日志内容
     * @author 陈梦晨 <2391157750@qq.com>
     * @return mixed
     */
    public function disable($record = [])
    {
        return $this->setstatus('disable');
    }

    /**
     * 启用
     * @param array $record 行为日志内容
     * @author 陈梦晨 <2391157750@qq.com>
     * @return mixed
     */
    public function enable($record = [])
    {
        return $this->setstatus('enable');
    }
}